package com.atguigu.jxc.service.impl;



import com.alibaba.fastjson.JSONObject;
import com.atguigu.jxc.dao.GoodsTypeDao;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.service.GoodsTypeService;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import java.util.List;


@Service
public class GoodsTypeServiceImpl implements GoodsTypeService {
    @Autowired
    private GoodsTypeDao goodsTypeDao;


    //新增分类
    @Override
    public Boolean save(String goodsTypeName, Integer pId) {


        goodsTypeDao.save(goodsTypeName,pId);


        return true;
    }


    @Override
    public String loadGoodsType() {
        JsonArray allGoodsType = this.getAllGoodsType(-1);

        return allGoodsType.toString();
    }

    public JsonArray getAllGoodsType(Integer parentId){

        JsonArray array = this.getGoodsTypeByParentId(parentId);

        for(int i = 0;i < array.size();i++){

            JsonObject obj = (JsonObject) array.get(i);

            if(obj.get("state").getAsString().equals("open")){//如果是叶子节点，不再递归

                continue;

            }else{//如果是根节点，继续递归查询

                obj.add("children", this.getAllGoodsType(obj.get("id").getAsInt()));

            }

        }

        return array;
    }

    public JsonArray getGoodsTypeByParentId(Integer parentId){

        JsonArray array = new JsonArray();

        List<GoodsType> goodsTypeList = goodsTypeDao.getGoodsTypeByParentId(parentId);

        //遍历菜单
        for(GoodsType goodsType : goodsTypeList){

            JsonObject obj = new JsonObject();

            obj.addProperty("id", goodsType.getGoodsTypeId());// 菜单ID

            obj.addProperty("text", goodsType.getGoodsTypeName());// 菜单名称

            obj.addProperty("iconCls", "goods-type");// 图标

            if(goodsType.getGoodsTypeState() == 1) {

                obj.addProperty("state", "closed"); // 根节点

            }else{

                obj.addProperty("state", "open");// 叶子节点
            }

            JsonObject attributes = new JsonObject(); //扩展属性



            obj.add("attributes", attributes);

            array.add(obj);

        }

        return array;
    }



}
